/*
 * 创建日期 2009-11-27
 *
 * 成都天和软件公司
 * 电话：028-85425861
 * 传真：028-85425861-8008
 * 邮编：610041 
 * 版权所有
 */
package  org.fantasy.common.db.mdx;

import  org.fantasy.common.db.Callable;
import  org.fantasy.common.db.QryFactory;
import  org.fantasy.common.db.Query;
import  org.fantasy.common.db.config.Options;

import java.util.HashMap;
import java.util.Map;

import javax.sql.DataSource;

import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;

/**
 *  DML工厂，生成各种DML实例
 * @author: 王文成
 * @version: 1.0
 * @since 2009-11-27
 */
public class MdxQryFactory implements QryFactory{

    private static Log log = LogFactory.getLog(MdxQryFactory.class);

    static {
        // jdk1.5取数据库连接慢的问题
        java.net.ProxySelector.setDefault(null);
    }

    /**
     * 数据源
     */
    private DataSource dataSource;
    
    /**
     * 参数配置
     */
    private Options options = new Options();

    public void setDataSource(DataSource dataSource) {
        this.dataSource = dataSource;
    }
    
    public void setOptions(Options options) {
        this.options = options;
    }

    /**
     * 查询，新增，删除，修改
     * @param sql
     * @return
     */
    public Query getQuery(String sql) {
        return getQuery(sql,new HashMap<String,Object>());
    }
    
    /**
     * 查询，新增，删除，修改
     * @param sql
     * @param paramMap
     * @return
     */
    public Query getQuery(String sql, Map<String,Object> paramMap) {
        MdxQuery query = new MdxQuery();
        query.setDataSource(dataSource);
        query.setSql(sql);
        query.setParamMap(paramMap);
        query.setOptions(options);
        return query;
    }
    
    /**
     * 存储过程
     * CALL J2EE_CALL_PKG.ADD_SERV_MANAGER_TYPE_ADJ(?,?,?,?,?,?,?,?,?)
     * @param procedure
     * @param inParams
     * @param outParams
     * @return
     */
    public Callable getCallable(String sql) {
        MdxCallable proc = new MdxCallable();
        proc.setDataSource(dataSource);
        proc.setProcedure(sql);
        proc.setOptions(options);
        return proc;
    }
    
    public static void main(String[] args) throws Exception {
        
    }
}
